﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessLayer.Clases_Seguridad_BO;
using EntityLayer;


namespace proyGestionActivos
{
    public partial class UsuarioFormActualizar : System.Web.UI.Page
    {
        static List<listaUsuarios> list;
        clsGrupoBL negociogrupo = new clsGrupoBL();
        clsUsuarioBL negocioUsuario = new clsUsuarioBL();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                list = new List<listaUsuarios>();
                this.CargarDatosUsuarios();
                this.ListarAccesosUsuarios();
            }
        }


        //void cargarTipoUsuario()
        //{

        //    cboTipoUsuario.DataSource = BL_t_mae_tabla_general_DetLogic.listarFiltroTipoUsuario();
        //    cboTipoUsuario.ValueField = "ID_GENERAL_DET";
        //    cboTipoUsuario.TextField = "DES_LARGA";
        //    cboTipoUsuario.Items.Add("Seleccione", 0);
        //    cboTipoUsuario.DataBind();
        //}

        void CargarDatosUsuarios() {

            txtUsuario.Text = Session["ID_USUARIO"].ToString();
            txtNombreUsuario.Text = Session["DES_NOMBRE"].ToString();
            txtApellidos.Text = Session["DES_APELLIDOS"].ToString();
            txtCorreoElectronico.Text = Session["DES_EMAIL"].ToString();
            txtUserCreacion.Text= Session["USR_CREACION"].ToString();
            //if (Convert.ToInt32(Session["ID_TIPO_USUARIO"]) == 6)
            //{
            //    cboTipoUsuario.ValueField = "6";
            //}
            //if (Convert.ToInt32(Session["ID_TIPO_USUARIO"]) == 7)
            //{
            //    //cboTipoUsuario.ValueField = "7";
            //}
            //else { 
            //    cboTipoUsuario.SelectedIndex = 0;
            //}
            Session["pass"] = txtPasswordNuevo.Text.Trim();

            if (Session["IND_ESTADO"].ToString() == "A") {

                cboEstado.SelectedIndex = 1;
            }
            else if (Session["IND_ESTADO"].ToString() == "I")
            {

                cboEstado.SelectedIndex = 2;

            }
            else {
                cboEstado.SelectedIndex = 0;            
            }       
        
        }

        private void ListarAccesosUsuarios() {
            try
            {
                List<T_Grupo> listar = negociogrupo.listarAccesosUsuarios();
                foreach (T_Grupo item in listar)
                {
                    listaUsuarios obj = new listaUsuarios();
                    obj.nombre = item.DES_NOMBRE;
                    obj.descripcion = item.DES_DESCRIPCION;
                    obj.id = item.ID_GRUPO;
                    list.Add(obj);
                }

                gvAccesos_Usuarios.DataSource = list;
                gvAccesos_Usuarios.DataBind();

                var q = from ug in negociogrupo.listarUsuario_Grupo()
                        where ug.ID_USUARIO == Session["ID_USUARIO"].ToString()
                        select ug;

                foreach (var item in q)
                {
                    for (int i = 0; i < list.Count; i++)
                    {
                        if (item.ID_GRUPO == list[i].id)
                        {
                            gvAccesos_Usuarios.Selection.SetSelection(i, true);
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                //throw ex;
            }
        }
        
        void limpiarControles() {
            txtApellidos.Text = "";
            txtCorreoElectronico.Text = "";
            txtNombreUsuario.Text = "";
        }

        protected void gvAccesos_Usuarios_PageIndexChanged(object sender, EventArgs e)
        {       

        }

        protected void btnLimpiar_Click(object sender, EventArgs e)
        {
            limpiarControles();
        }

        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtApellidos.Text == String.Empty || txtCorreoElectronico.Text == String.Empty || txtNombreUsuario.Text == String.Empty || cboEstado.SelectedIndex == 0 )
                {
                    lblmsj.Text = String.Empty;
                    lblmsj.Text = "Rellene los campos vacios!";
                    string script = "ShowMsj();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                }
                else
                {
                    this.Actualizar();
                }
            }
            catch(Exception ex)
            {
                //throw ex;
            }           
        }


        void Actualizar()
        {
            try
            {
                T_Usuario usuario = new T_Usuario();
                usuario.ID_USUARIO = txtUsuario.Text;
                usuario.DES_NOMBRE = txtNombreUsuario.Text;
                usuario.DES_APELLIDOS = txtApellidos.Text;
                usuario.FEC_ACTUALIZO = DateTime.Now;
                //usuario.USR_ACTUALIZO = ((t_usuario)Session[DatosSesion.User]).ID_USUARIO;
                usuario.USR_ACTUALIZO = ((T_Usuario)Session["SesionUser"]).ID_USUARIO;
                usuario.DES_PASSWORD = Session["pass"].ToString() == "" ? Session["DES_PASSWORD"].ToString() : clsSeguridad.Encrypt(Session["pass"].ToString());
                Session["DES_PASSWORD"] = usuario.DES_PASSWORD;
                usuario.DES_EMAIL = txtCorreoElectronico.Text;
                usuario.IND_ESTADO = cboEstado.Text.Substring(0, 1);
                usuario.USR_CREACION = txtUserCreacion.Text;

                if (CheckBoxRecordar.Checked == true)
                {
                    usuario.IND_COOKIE = "S";
                }
                else
                {
                    usuario.IND_COOKIE = "N";
                }

                bool flagModificado = negocioUsuario.Modificar(usuario);
                if (flagModificado)
                {
                    this.actualizarUsuarioGrupo();
                    
                    lblmsj.Text =String.Empty;
                    lblmsj.Text = "Se actualizo correctamente !";
                    string script = "ShowMsj();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                }
                else {

                    lblmsj.Text = String.Empty;
                    lblmsj.Text = "Error al actualizar!";
                    string script = "ShowMsj();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                }
            }
            catch (Exception ex)
            {
                //throw ex;   
            }
        }

        private void actualizarUsuarioGrupo()
        {
            try
            {
                negocioUsuario.EliminarUsuarioGrupo(txtUsuario.Text);
                List<Object> selectItems = gvAccesos_Usuarios.GetSelectedFieldValues("id");

                foreach (object selectItemId in selectItems)
                {
                    negocioUsuario.InsertarUsuarioGrupo(new T_Usuario_Grupo() { ID_USUARIO = txtUsuario.Text, ID_GRUPO = (int)selectItemId });
                }
            }
            catch(Exception ex)
            {
                //throw ex;
            }
        }

        protected void btnCambiarPassword_Click(object sender, EventArgs e)
        {
            //txtPasswordNuevo.Text = "";
        }

        protected void btnAceptarPop_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtPassWordAnterior.Text == clsSeguridad.Decrypt(Session["DES_PASSWORD"].ToString()))
                {
                    clsUsuarioBL negusuario=new clsUsuarioBL();
                    Session["pass"] = txtPasswordNuevo.Text.Trim();
                    lblmsj.Text = String.Empty;
                    T_Usuario usuario = new T_Usuario();
                    if (negusuario.cambiarPassword( clsSeguridad.Encrypt(txtPasswordNuevo.Text),txtUsuario.Text.Trim()))
                    {
                        lblmsj.Text = "Se modificó el password, grabar los cambios!";
                        string script = "ShowMsj();";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                    }
                   
                }
                else
                {
                    lblmsj.Text = String.Empty;
                    lblmsj.Text = "El password anterior no es correcto!";
                    string script = "ShowMsj();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                }
            }
            catch(Exception ex)
            {
                //throw ex;
            }          
        }

        //void CambiarPassoword() {
        //    try
        //    {
        //        if (negocioUsuario.DescencriptarPassword(Session["ID_USUARIO"].ToString(), negocioUsuario.EncriptarPasswordUser(this.txtPasswordNuevo.Text)))
        //        {
        //            lblmsj.Text = String.Empty;
        //            lblmsj.Text = "Se cambió el password correctamente!";
        //            string script = "ShowMsj();";
        //            ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
        //        }
        //        else {
        //            lblmsj.Text = String.Empty;
        //            lblmsj.Text = "El password anterior no es correcto";
        //            string script = "ShowMsj();";
        //            ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
        //        }
        //    }
        //    catch(Exception ex)
        //    {
        //        throw ex;
        //    }
        //}

     
        protected void gvAccesos_Usuarios_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            this.ListarAccesosUsuarios();
        }

        public struct listaUsuarios
        {
            public int id { get; set; }
            public string nombre { get; set; }
            public string descripcion { get; set; }
            public bool marcar { get; set; }
        }

        protected void btnSalir_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Administracion/Usuario/UsuarioForm.aspx?id=" + Request["id"].ToString());
        }

        protected void btnCancelarPop_Click(object sender, EventArgs e)
        {

        }

        protected void ASPxButton1_Click(object sender, EventArgs e)
        {

        }

  

        //protected void btnSalir1_Click(object sender, EventArgs e)
        //{
        //    Response.Redirect("~/Administracion/Usuario/UsuarioForm.aspx?id=" + Request["id"].ToString());
        //}

    }
}